﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using Matrix.Common.DBUtility;
using Matrix.MaKaYunShang.Model;
using Matrix.MaKaYunShang.Model.Dto;

namespace Matrix.MaKaYunShang.DAL
{
    public partial class SysPayDiscountConfigDAL : BaseDAL<SysPayDiscountConfigDAL>
    {
        #region 默认方法
        /// <summary>
        /// 增加一条数据
        /// </summary>
        public int Add(SysPayDiscountConfig model)
        {
            var strSql = new StringBuilder();
            strSql.Append("insert into SysPayDiscountConfig(");
            strSql.Append("MinPayDiscount,MaxPayDiscount,DiscountProbability,DiscountBaseId,IsDelete");
            strSql.Append(") values (");
            strSql.Append("@MinPayDiscount,@MaxPayDiscount,@DiscountProbability,@DiscountBaseId,@IsDelete");
            strSql.Append(") ");
            strSql.Append(";select @@IDENTITY");
            SqlParameter[] parameters = {
			            new SqlParameter("@MinPayDiscount", SqlDbType.Decimal,9) ,            
                        new SqlParameter("@MaxPayDiscount", SqlDbType.Decimal,9) ,            
                        new SqlParameter("@DiscountProbability", SqlDbType.Int,4) ,            
                        new SqlParameter("@DiscountBaseId", SqlDbType.Int,4) ,            
                        new SqlParameter("@IsDelete", SqlDbType.Bit,1)             
              
            };

            parameters[0].Value = model.MinPayDiscount;
            parameters[1].Value = model.MaxPayDiscount;
            parameters[2].Value = model.DiscountProbability;
            parameters[3].Value = model.DiscountBaseId;
            parameters[4].Value = model.IsDelete; var obj = DbHelperSQL.GetSingle(strSql.ToString(), parameters);
            return obj == null ? 0 : Convert.ToInt32(obj);
        }

        /// <summary>
        /// 更新一条数据
        /// </summary>
        public bool Update(SysPayDiscountConfig model)
        {
            var strSql = new StringBuilder();
            strSql.Append("update SysPayDiscountConfig set ");

            strSql.Append(" MinPayDiscount = @MinPayDiscount , ");
            strSql.Append(" MaxPayDiscount = @MaxPayDiscount , ");
            strSql.Append(" DiscountProbability = @DiscountProbability , ");
            strSql.Append(" DiscountBaseId = @DiscountBaseId , ");
            strSql.Append(" IsDelete = @IsDelete  ");
            strSql.Append(" where Id=@Id ");

            SqlParameter[] parameters = {
			            new SqlParameter("@Id", SqlDbType.Int,4) ,            
                        new SqlParameter("@MinPayDiscount", SqlDbType.Decimal,9) ,            
                        new SqlParameter("@MaxPayDiscount", SqlDbType.Decimal,9) ,            
                        new SqlParameter("@DiscountProbability", SqlDbType.Int,4) ,            
                        new SqlParameter("@DiscountBaseId", SqlDbType.Int,4) ,            
                        new SqlParameter("@IsDelete", SqlDbType.Bit,1)             
              
            };

            parameters[0].Value = model.Id;
            parameters[1].Value = model.MinPayDiscount;
            parameters[2].Value = model.MaxPayDiscount;
            parameters[3].Value = model.DiscountProbability;
            parameters[4].Value = model.DiscountBaseId;
            parameters[5].Value = model.IsDelete; return DbHelperSQL.ExecuteSql(strSql.ToString(), parameters) > 0;
        }

        /// <summary>
        /// 删除一条数据
        /// </summary>
        public bool Delete(int Id)
        {
            var strSql = new StringBuilder();
            strSql.Append("update SysPayDiscountConfig set IsDelete=1 ");
            strSql.Append(" where Id=@Id");
            SqlParameter[] parameters = {
					new SqlParameter("@Id", SqlDbType.Int,4)
			};
            parameters[0].Value = Id;

            return DbHelperSQL.ExecuteSql(strSql.ToString(), parameters) > 0;
        }

        /// <summary>
        /// 批量删除一批数据
        /// </summary>
        public bool DeleteList(string Idlist)
        {
            var strSql = new StringBuilder();
            strSql.Append("update SysPayDiscountConfig set IsDelete=1 ");
            strSql.Append(" where Id in (" + Idlist + ")  ");
            return DbHelperSQL.ExecuteSql(strSql.ToString()) > 0;
        }

        /// <summary>
        /// 得到一个对象实体
        /// </summary>
        public DataSet GetModel(int Id)
        {
            var strSql = new StringBuilder();
            strSql.Append("select Id, MinPayDiscount, MaxPayDiscount, DiscountProbability, DiscountBaseId, IsDelete  ");
            strSql.Append("  from SysPayDiscountConfig ");
            strSql.Append(" where Id=@Id  and IsDelete=0");
            SqlParameter[] parameters = {
					new SqlParameter("@Id", SqlDbType.Int,4)
			};
            parameters[0].Value = Id;

            var ds = DbHelperSQL.Query(strSql.ToString(), parameters);
            return ds.Tables[0].Rows.Count > 0 ? ds : null;
        }

        /// <summary>
        /// 获得数据列表
        /// </summary>
        public DataSet GetList(string strWhere)
        {
            var strSql = new StringBuilder();
            strSql.Append("select * ");
            strSql.Append(" FROM SysPayDiscountConfig where IsDelete=0 ");
            if (!string.IsNullOrEmpty(strWhere))
            {
                strSql.Append(" and " + strWhere);
            }
            return DbHelperSQL.Query(strSql.ToString());
        }
        #endregion

        #region 扩展方法

        public DataSet GetModel(decimal minPayDiscount, decimal maxPayDiscount)
        {
            var strSql = new StringBuilder();
            strSql.Append("select * from SysPayDiscountConfig ");
            strSql.Append(" where ([MinPayDiscount]>=@minPayDiscount and [MaxPayDiscount]>=@minPayDiscount) or ([MinPayDiscount]>=@maxPayDiscount and [MaxPayDiscount]>=@maxPayDiscount ) and IsDelete=0");
            SqlParameter[] parameters = {
				new SqlParameter("@minPayDiscount", SqlDbType.Decimal,4),
                new SqlParameter("@maxPayDiscount", SqlDbType.Decimal,4)
			};
            parameters[0].Value = minPayDiscount;
            parameters[1].Value = maxPayDiscount;
            var ds = DbHelperSQL.Query(strSql.ToString(), parameters);
            return ds.Tables[0].Rows.Count > 0 ? ds : null;
        }
        public List<ViewSysPayDiscountConfigDto> GetPagingList(int pageIndex, int pageSize, string searchKeyWord, string colOrder, ref int totalCount)
        {
            string strWhere = " IsDelete = 0 ";
            if (!string.IsNullOrEmpty(searchKeyWord))
            {
                strWhere += " AND (MinPayDiscount LIKE '%" + searchKeyWord + "%' OR MaxPayDiscount LIKE '%" + searchKeyWord +
                            "%' OR DiscountProbability LIKE '%" + searchKeyWord + "%') ";
            }
            return GetSimpleListPage<ViewSysPayDiscountConfigDto>(pageIndex, pageSize, "SysPayDiscountConfig", null, null, colOrder, strWhere,
                         ref totalCount);
        }

        public bool DeleteByDiscountBaseId(int DiscountBaseId)
        {
            var strSql = new StringBuilder();
            strSql.Append("update SysPayDiscountConfig set IsDelete=1 ");
            strSql.Append(" where DiscountBaseId=@DiscountBaseId");
            SqlParameter[] parameters = {
					new SqlParameter("@DiscountBaseId", SqlDbType.Int,4)
			};
            parameters[0].Value = DiscountBaseId;

            return DbHelperSQL.ExecuteSql(strSql.ToString(), parameters) > 0;
        }
        #endregion
    }
}
